{ "cells": [ { "cell_type": "markdown", "id": "fa37ce86", "metadata": {}, "source": [ " \n", "\n", "# Quantum Operations and Simulations in Qiskit\n", "\n", " " ] }, { "cell_type": "markdown", "id": "bbe310ff", "metadata": {}, "source": [ "\n", "## Contents\n", "\n", "1. [Introduction](#introduction)\n", "\n", " 1.1 [Overview of Qiskit](#qiskit_overview)\n", " \n", " 1.2 [The quantum bit](#quantum_bit)\n", " \n", " \n", "2. [Single-qubit states](#single_states)\n", "\n", " 2.1 [Single-qubit operations](#single_operations)\n", " \n", "\n", "3. [Multi-qubit states](#multi_qubits)\n", "\n", " 3.1 [Multi-qubit operations](#multi_op)\n", " \n", " \n", "4. [Summary](#summary)" ] }, { "cell_type": "markdown", "id": "8cb64fe2", "metadata": {}, "source": [ " \n", "\n", "# 1. Introduction\n", "\n", "\n", "This set of classes draws ideas from an abundance of online learning materials for Qiskit, particularly the [Qiskit online tutorials](https://github.com/Qiskit/qiskit-iqx-tutorials) and [textbook](https://qiskit.org/textbook/preface.html). Another source was Miguel Ramalho's [Teach me quantum](https://github.com/msramalho/Teach-Me-Quantum), which was [recognized](https://dei.fe.up.pt/en/blog/2019/03/15/we-have-winners-of-the-ibm-q-teach-me-quantum-challenge/) by IBM.\n", "\n", "Images that are not our own were adapted from the IBM Q experience documentation and public Qiskit materials." ] }, { "cell_type": "markdown", "id": "53c8d8ab", "metadata": {}, "source": [ " \n", "\n", "## 1.1. QISKit - an overview\n", "\n", "\"Note: Trusted Notebook\" width=\"400 px\" align=\"center\">\n", "\n", "Qiskit is an open-source framework for working with quantum computers at the level of algorithms, quantum circuits, or even pulses. It can be installed and executed locally, but to execute your code in actual, public access quantum processors, you need to create a [IBM Quantum experience](https://quantum-computing.ibm.com) account.\n", "\n", "\n", "Its main goals are:\n", "\n", " - to build a software stack for the development of quantum software and applications;\n", " - to make it easier for students to understand and learn about quantum computation;\n", " - to facilitate research on the most important open issues facing quantum computation today.\n", "\n", "Qiskit supports the *Python* language, which is itself compatible with multiple programming paradigms.\n", "\n", "\n", "The main pillar of this toolkit (which the majority of these classes will feature) is **Qiskit Terra**, and it allows us to:\n", "\n", "- compose quantum programs at the level of circuits and pulses;\n", "- optimize them for the constraints of a particular device;\n", "- interact with the execution backends.\n", "\n", " \n", "
\n", " \"Qiskit\n", " Qiskit and its elements (Source)\n", "
\n", " \n", "\n", "\n", "\n", "As of version `0.12`, Qiskit is composed of other 3 main modules:\n", "\n", "**Aer** is a simulator framework for the stack - it allows us to:\n", "- simulate the execution of a quantum circuit under ideal (ie noiseless) conditions;\n", "- obtain the complete mathematical description of a given quantum state or quantum operator;\n", "- construct highly configurable models for realistic noisy simulations of the errors that occur during execution on real devices;\n", "\n", "
\n", "Note that these simulations are performed on classical computers, and so are limited by classical resources.\n", "
\n", "\n", "**Ignis** is a framework for understanding and mitigating noise in quantum circuits and systems. The experiments provided in Ignis are grouped into the topics of:\n", "- characterization of quantum system parameters such as noise (T1 and T2), and control errors in the gates;\n", "- verification of quantum operation and ciruit performance, using for example process tomography or randomized benchmarking;\n", "- error mitigation routines generated by execution of calibration circuits;\n", "\n", "**Aqua** provides higher-level functionality by use of a library of quantum algorithms upon which applications of near term quantum computing can be built. Aqua specifically identifies four domains that stand to benefit from the development of quantum computation:\n", "- Chemistry;\n", "- Artificial Intelligence (AI);\n", "- Optimization;\n", "- Finance.\n", "\n", "*Qiskit >=0.25.0 deprecates the Qiskit Aqua project.* The application modules that are provided by qiskit-aqua have been split into several new packages: qiskit-optimization, qiskit-nature, qiskit-machine-learning, and qiskit-finance. \n", "\n", "In March 2021, Qiskit launched **[Qiskit Metal](https://qiskit.org/metal/)** the first open-ource project to design superconducting quantum devices.\n", "\n", "Qiskit is still under an intense development cycle, which means that new updates and features are added several times a year. You can find more information abou Qiskit elements in [here](https://qiskit.org/documentation/stable/0.24/the_elements.html)." ] }, { "cell_type": "markdown", "id": "345962fb", "metadata": {}, "source": [ " \n", "\n", "## 1.2. The quantum bit\n", "\n", " \n", "\n", "### A physical qubit\n", "\n", "Any quantum system with two orthogonal states can be used to represent a quantum bit, or *qubit* for short.\n", "\n", "\n", "\n", "Consider a simplified representation of the electron of a Hydrogen atom, orbiting around the nucleus, with two possible energy states. As this is a quantum particle, these energy states are quantized, that is, they take only discrete values. The energy state of the electron can be considered a quantum bit.\n", "\n", "How can we represent quantum states and associated operations?" ] }, { "cell_type": "markdown", "id": "ff2266ef", "metadata": {}, "source": [ " \n", "\n", "### Bra-ket notation\n", "\n", "In quantum mechanics, wave functions and other quantum states can be represented as vectors in an abstract vector space.\n", "\n", "The bra–ket notation is a standard notation for describing quantum states. It uses angle brackets (the $\\rangle$ and $\\langle$ symbols) with a vertical bar (the $|$ symbol) to denote labelled vectors.\n", "\n", "- A *ket* $|u\\rangle$ is typically written as a column vector, while a *bra* $\\langle v |$ is typically written as a row vector.\n", "\n", "- A *bra* and a *ket* with the same label are [Hermitian conjugates](https://en.wikipedia.org/wiki/Conjugate_transpose) of each other. \n", "\n", "This notation simplifies the representation of the scalar product of vectors, as well as the action of a linear operator on a vector and other operations over a complex vector space.\n", "\n", "
\n", " \n", "**Example 1.1 - Inner product with bra-ket**\n", "\n", "Consider the ket vector $|u\\rangle$ and $|v\\rangle$ on a two-dimensional space:\n", "\n", "$$\n", "|u\\rangle = \n", "\\begin{pmatrix}\n", "1 \\\\\n", "0\n", "\\end{pmatrix};\n", "\\;\\;\n", "|v\\rangle = \n", "\\begin{pmatrix}\n", "0 \\\\\n", "i\n", "\\end{pmatrix};\n", "$$\n", "\n", " \n", "\n", "Their respective hermitian conjugates, $\\langle u|$ and $\\langle v|$, can be represented as row vectors:\n", "\n", " \n", "\n", "$$\n", "\\langle u| = \n", "\\begin{pmatrix}\n", "1 & 0\n", "\\end{pmatrix};\n", "\\;\\;\n", "\\langle v | = \n", "\\begin{pmatrix}\n", "0 & -i\n", "\\end{pmatrix};\n", "$$\n", "\n", " \n", "\n", "The inner product between $\\langle v|$ and $|u\\rangle$ is represented as $\\langle v | u \\rangle$:\n", "\n", " \n", "\n", "$$\n", "\\langle v | u \\rangle =\n", "\\begin{pmatrix}\n", "0 & -i\n", "\\end{pmatrix}\n", "\\begin{pmatrix}\n", "1 \\\\\n", "0\n", "\\end{pmatrix} = 0 \\, ;\n", "$$\n", "\n", " \n", "\n", "A null inner product means that these vectors are orthogonal, thereby forming a basis in a two-dimensional space.\n", "
" ] }, { "cell_type": "markdown", "id": "2ba40eee", "metadata": {}, "source": [ " \n", "\n", "# 2. Single qubit states\n", "\n", " \n", "\n", "A single qubit quantum state $|\\psi\\rangle$ can be written as a complex superposition of its basis states, which by convention are generally named $|0\\rangle$ and $|1\\rangle$.\n", "\n", "$$|\\psi\\rangle = \\alpha|0\\rangle + \\beta |1\\rangle$$\n", "\n", "Here, $\\alpha$ and $\\beta$ are probability amplitudes generally described by complex numbers. When the qubit is measured, the quantum system \"collapses\" to the state $|0\\rangle$ with probability $|\\alpha|^2$, or to the state $|1\\rangle$ with probability $|\\beta|^2$.\n", "\n", "\n", "The basis states represent the quantum analogue to the classical bit states $0$ and $1$:\n", "\n", "$$\n", "|0\\rangle = \n", "\\begin{pmatrix}\n", "1 \\\\\n", "0\n", "\\end{pmatrix};\n", "\\;\\;\\;\n", "|1\\rangle = \n", "\\begin{pmatrix}\n", "0 \\\\\n", "1\n", "\\end{pmatrix};\n", "$$\n", "\n", "Which allows for the column representation of $|\\psi\\rangle$:\n", "\n", "$$\n", "|\\psi\\rangle = \n", "\\begin{pmatrix}\n", "\\alpha \\\\\n", "\\beta\n", "\\end{pmatrix}\n", "$$\n", "\n", "where $|\\alpha|^2 + |\\beta^2| = 1$." ] }, { "cell_type": "markdown", "id": "4e411fc9", "metadata": {}, "source": [ "
\n", "\n", "**Exercise 1.1 - Orthogonality**\n", "\n", "Another well known example of a basis in a two-dimensional space is formed by the $|+\\rangle$ and $|-\\rangle$ states:\n", "\n", " \n", "\n", "$$\n", "|+\\rangle = \\frac{1}{\\sqrt{2}}\n", "\\begin{pmatrix}\n", "1 \\\\\n", "1\n", "\\end{pmatrix};\n", "\\;\\;\\;\n", "|-\\rangle = \\frac{1}{\\sqrt{2}}\n", "\\begin{pmatrix}\n", "1 \\\\\n", "-1\n", "\\end{pmatrix};\n", "$$\n", "\n", " \n", "\n", "- Verify that these states are orthogonal by calculating the inner product $\\langle + | - \\rangle$.\n", "\n", "
" ] }, { "cell_type": "markdown", "id": "ee6051ec", "metadata": {}, "source": [ " \n", "\n", "### Bloch sphere\n", "\n", "The absolute squares of the probability amplitudes, $|\\alpha|^2$ and $|\\beta|^2$, represent the probability of the corresponding measurement outcome. A basic rule for probability is that the probabilities of all possible outcomes must add up to $1$, so it follows that $\\alpha$ and $\\beta$ must be constrained by the equation:\n", "\n", "$$|\\alpha|^2+ |\\beta|^2 = 1$$\n", "\n", "Ignoring the global phase of a qubit, i.e.\n", "\n", "$$|\\psi\\rangle := e^{i\\delta} |\\psi\\rangle$$\n", "\n", "only two real numbers are required to describe a single qubit quantum state. A convenient representation is\n", "\n", "$$|\\psi\\rangle = \\cos(\\theta/2)|0\\rangle + \\sin(\\theta/2)e^{i\\phi}|1\\rangle$$\n", "\n", "where $0\\leq \\phi < 2\\pi$, and $0\\leq \\theta \\leq \\pi$. \n", "\n", "It is then possible to create a one-to-one correspondence between a qubit state ($\\mathbb{C}^2$) and the points on the surface of a unit sphere ($\\mathbb{R}^3$). This is called the Bloch sphere representation of a qubit state.\n", "\n", "\"\"\n", "\n", "By contrast, a representation of a classical bit over the Bloch sphere would only require the two points of the sphere intersecting the Z axis." ] }, { "cell_type": "markdown", "id": "9036f3ce", "metadata": {}, "source": [ " \n", "\n", "## 2.1 Single-Qubit Gates\n", "\n", " \n", "\n", "Quantum gates/operations are usually represented as matrices. A gate acting on a single qubit is represented by a $2\\times 2$ unitary matrix $U$ with complex entries. The action of the quantum gate on the qubit is determined by multiplying the matrix representing the gate with the vector which represents the quantum state.\n", "\n", "$$|\\psi'\\rangle = U|\\psi\\rangle$$\n", "\n", "Some of the single-qubit gates available are:\n", "- Measurement gates\n", "- Pauli gates\n", "- Hadamard gate\n", "- Generalized unitary gates (with constraints)\n" ] }, { "cell_type": "markdown", "id": "66b2cc09", "metadata": {}, "source": [ "
\n", "\n", "**Importing Qiskit**\n", "\n", " \n", "\n", "The following sections will make use of Qiskit to design and visualize circuits and quantum operations. \n", "\n", "**The execution of the code cells in this notebook requires that the relevant Qiskit modules be imported first.**\n", " \n", "To execute a code block, select a code cell and press `SHIFT + ENTER`. Consecutive cells can be executed by repeating this command.\n", "\n", "If the below cells output an error, it probably means Qiskit hasn't been installed properly. Refer to [this webpage](https://qiskit.org/documentation/install.html) for installation details.\n", "
" ] }, { "cell_type": "code", "execution_count": 2, "id": "df15e7c4", "metadata": { "ExecuteTime": { "end_time": "2018-09-29T00:04:16.313210Z", "start_time": "2018-09-29T00:04:14.460647Z" }, "hideOutput": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Modules successfully imported.\n" ] } ], "source": [ "# Comments on code cells are preceded by '#'\n", "\n", "# Relevant QISKit modules\n", "\n", "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, BasicAer, execute\n", "\n", "from qiskit.tools.visualization import plot_histogram, visualize_transition\n", "\n", "# Useful additional packages \n", "\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import numpy as np\n", "from math import pi\n", "\n", "# Output a message to confirm all modules are imported\n", "\n", "print(\"Modules successfully imported.\")" ] }, { "cell_type": "markdown", "id": "0a6e2b8c", "metadata": {}, "source": [ " \n", "\n", "### Measurement gate\n", "\n", "A direct measurement causes the system to collapse to a deterministic state i.e. stabilise in a non-reversible way. Physically, we still don't know exactly how this collapse occurs, in what is called the [measurement problem](https://en.wikipedia.org/wiki/Measurement_problem).\n", "\n", "A repeated measurement of the collapsed quantum system will return the same results, just like repeated readings of a bit string.\n", "\n", "When we perform a measurement on a qubit, we observe either $|0\\rangle$ or $|1\\rangle$ - which is then interpreted as a binary digit, $0$ or $1$. As such, a single measurement of a quantum system yields at most 1 bit per qubit. When a quantum system is in a superposition of basis states, many more measurements are needed to accurately estimate probability amplitudes.\n", "\n", "\n", "\n", "In Qiskit measurement operations can be performed by defining the correspondence between the measured qubit and the bit where the result of the operation (0 or 1) is going to be stored. \n", "\n", "Since the measuring process physically collapses the qubit into a classical state, QISKit does not allow for subsequent quantum operations on the measured qubit.\n", "\n", "
\n", " \n", "**Building your first quantum circuit!**\n", "\n", " \n", "\n", "In Qiskit, before building a quantum circuit, we first neet to define a `QuantumRegister(n)` object, with `n` being the desired number of qubits. \n", "\n", "To perform measurements, a `ClassicalRegister(m)` is also required, where `m` is the number of bits to contain the results of the measurement. \n", "\n", "Lastly, a `QuantumCircuit` object needs to be defined, containing a list of quantum and classical registers. Quantum operations may then be called on this object.\n", "\n", " \n", "\n", "The measurement operation `measure(qr[i], cr[j])` is called on a circuit object by specifying the quantum register `qr`and qubit `i` to be measured, and the classical register `cr` and bit `j` which is to store the measurement value. A measurement can also be called over the complete register, provided that registers `qr` and `cr` are the same size: `measure(qr, cr)`.\n", "\n", " \n", "\n", "A complete circuit can be visualized graphically by calling the `draw` method.\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 3, "id": "1aea98e1", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAADuCAYAAAD2gtH0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAcqElEQVR4nO3de1iUZd4H8O/AMMMZwRMIITiJR1TSBJUOmK5ncd92XdPWA6TuVmu1hm1mXbWaR/LtXStzWUvTMnfR3M1T1GpqaooiVhrLgoqCMx7ygMN5mPv9w2YSmaGZYWBg7u/nuuaS53Dfz+8Z+T7nGRRCCAEiko6HqwsgItdg+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrhJ5IUw08kKaWrCyDnEUKgvLzc1WXYxdfXFwqFwtVlSInhdyPl5eXw9/d3dRl20ev18PPzc3UZUuJhP5GkGH4iSTH8RJJi+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH4iSTH81KCgoCBERUVBo9GgU6dO8PCw71dm0qRJiI2NbaLqqDEYfiuysrIwcuRItG3bFr6+voiNjcWSJUtQXV3t6tKaVLt27fDcc88hMzMTZ8+exY0bN3D27FkUFBSgpKQEN2/exIEDB/Dmm28iMTGxwb4ef/xxfPjhh/j3v//NDUBLJKie9PR0AUAAEJ07dxb9+vUTSqVSABCDBw8W5eXlri7RIr1eb67b3lefPn3E+vXrRWVlpV3L/Oabb8Ts2bPN74/p9fjjj4va2lrzfIsWLbK4XL1e7+y3gWzE8N/lyJEjQqFQCIVCIdatW2ceX1BQIO69914BQDzzzDOuK7ABjoRfpVKJP//5z6KmpqZef7du3RL79+8XH330kdiwYYPYtm2bKCwstLjsY8eOid69e1sM/qpVq6wun+F3HYb/LmPHjhUAREpKSr1p+/btMwfm0qVLLqiuYfaGPzo6Wpw8ebJOH1evXhXLly8XvXv3Fh4eHhbbhYSEiClTpoivvvqqTtuqqirxwQcf2Bx8ht+13D78V65cEWlpaUKj0Qi1Wi0iIiLEnDlzhF6vFykpKQKAWLVqlRBCiNLSUqFSqQQAcfjwYYv9xcTECAAiIyOjOVfDJvaEv1u3bqKkpMTctrq6WrzyyivC29vbrg1IQkKC+O677yzW83PBZ/hdy63Df+LECREaGioACD8/PxEXFyc6duwoAIgxY8aIQYMGCQDiwIEDQoif9uxqtdriYbAQwrzBSE1Nbc5VsYmt4Q8PDxfnz583tzt9+rTo27evw9cL1Gq12LFjR51aDhw4YFNbht913Db8V65cEREREQKAmDt3rigtLTVPW7ZsmQAglEqlUCgU4ubNm0IIITIyMgQAERMTY7Xf119/XQAQDzzwQJOvg71sDX9WVpa5TU5OjggJCXE4+JbO8YUQoqamRvTv35/hb8HcNvyPPfaYACCefvppi9NNe7ro6GjzuOXLlwsAIj4+3mq/77zzjgAgevfu7fSaG8uW8M+cOdM8//nz50X79u2dGvzs7Gzzz9988435NIrhb3nc8j7/999/j82bN6Ndu3ZYsmSJxXn69+8PAOjbt695XGVlJQBApVJZ7VutVgMAKioq6ow/e/Ysxo8fj4CAAAQHB2Pq1Kn44YcfGrUezhYUFIT09HTz8BNPPIErV6443N/jjz+O9evXmx/8eeuttzBo0CDk5OQAAGJjYzFnzpzGFU1Nxi2/wHPTpk0wGo2YMmWK1S+09PHxAVA3/N7e3gDQ4IM8VVVVddoDwK1bt5CUlISQkBBs2rQJFRUVmDdvHsaOHYuDBw/a/VQcAAwYMAA6nc6uNkajscHp06ZNQ2BgIABg3bp1yMrKsrsuE0vB/8Mf/gAAmDFjBk6cOAEPDw889dRTWLlypdXaunbt6tD7Q7eFhobi2LFjjjV29aFHUxgyZIgAILZt22Z1nuTkZAFAbN261TzO0XP+9PR0oVQqRVFRkXncoUOHBADxySefOLQO4eHhjTocv/ulUChEXl6euf/u3bs77VDf0lX97du3m6ebbp/y5fxXeHi4Q79fQgjhlnv+oqIiAEDnzp0tTjcYDDh48CCAunv+mJgYc3uDwQClsv7bU1hYWGdeANi+fTsSExMRGRlpHjdo0CB06dIFn376KSZMmGD3OoSGhtrdxmg0QqvVWpwWFxeHbt26AQD27NmDvLw8u/sHGt7j3+mdd97BmDFjAACTJ0/G9u3bLfYXFhbGPX8jOPJ7YubwZqMFCw4OFgDEoUOHLE7fuHGjACACAgKE0Wg0j7fnPv9f//pX87gOHTqIp556qt6848aNEwkJCY1cG9s1dMFv1qxZ5vnmzJnTZHt800upVIqKigohhBD5+flW5+MFP9dxy02uaWtouvB0J61Wi7S0NABAnz596vy1mICAAAwfPhwAkJGRUa/t/v37kZ+fD5VKheTkZPP469evo02bNvXmDwkJwbVr1xq1Ls5iusAJwKFzRFv3+CYGgwG5ubkAbp/Xm641UMvhluEfNmwYAGDZsmXIz883j8/OzkZSUhKuXr0KAOjXr1+9tgsWLIBCocD777+P9evXm8cXFhYiNTUVADB79mx06NChCdfA+bp3727++eTJk3a1tTf4Jqbw3718ahncMvzz5s1D27ZtceHCBfTq1QuxsbHo2rUrBg4ciC5dumDo0KEA6p7vmyQkJGDp0qUQQmD69OmIiopCXFwcunfvjoKCAsTHx2Pp0qV12gQHB+PGjRv1+rp27RpCQkKaZB3tdfXqVZw/fx5arRZlZWU2t3vsscccCj4AXLx4ERcvXkRhYSGEEA7VTU3I1ecdTeX06dNizJgxwt/fX/j7+4uBAweKNWvWCKPRKKKjowUAceTIEavtd+/eLYYPHy7atGkjvL29Rc+ePcXrr79u8SOvDz30kEhKSqo3XqPRiBkzZjh1vRrSmI/0WnvFxcWJH374QQhh27P69r54zu86bht+a27duiUUCoXw8PAQZWVlTulzxYoVwsvLS1y4cME87uuvvxZA3VuJTa0pwm/aACxevLhJ+mb4XUchhFzHY0eOHEFCQgK6devm8O2uu5WWliI2Nhbt2rXDa6+9hsrKSsybNw/t27fH4cOHm+1WVllZGf9KL9nMLc/5G/Ltt98CsHy+76jAwEDs2bMHYWFhmDRpEp544gkMHjwY27dv5z1sarHc8iGfhjRF+AFAo9FYfZCFqCWSbrfUVOEnam2kO+d3ZzznJ3tIt+cnotsYfiJJMfxEkmL4iSTF8BNJiuEnkhTDTyQphp9IUgw/kaT4hJ8bEUKgvLzcaf2tWPMxSsvKEejni7TZk+oNO4Ovr2+dr1Kj5iPdB3vcmUKhcOqjsiq1N1Q1tVCpveHn51dvmFo3HvYTSYrhJ5IUw08kKYafSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrf5ENuxdlfZdYcXPVVZgw/uZXy8nL+pWIb8bCfSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH6iJqRQKHDPPfe4ugyL+Gy/FVlZWVi5ciWys7NRUVEBjUaDyZMnY+7cuVCpVK4uj5qQl5cX7rvvPvTv3x/9+/dHZGQk1Go1ampqcPnyZeTk5OD48eM4evQo9Hq91X4UCgXeeustTJw4EUOHDsW3337bjGvx8xh+C9544w08//zzAIDOnTsjMjIS3333HebPn4/t27fjiy++gI+Pj4urJGeLiIjArFmzMHPmTISGhlqdb9KkSQCAsrIybNy4EatXr8bJkyfrzGMK/pNPPgng9s6ka9euDW4smhsP++9y9OhRpKWlQaFQYN26dTh37hxOnDiBvLw83HvvvTh06BBefPFFV5dJTuTt7Y0VK1bg3LlzePnllxsM/p38/Pwwe/Zs5Obm4pNPPkHHjh0B1A9+bW0t5s6d26KCDzD89SxcuBBCCMyYMQPTpk0zj9doNFi7di0AYPXq1bh8+bKrSiQnGjhwIHJzc/H888/D09MTAGAwGLBlyxY89dRTSEhIQFBQEFQqFfz8/BAbG4vp06cjIyMDpaWl5n4mTJiA06dP47HHHqsX/KlTp+Kjjz5yyfo1SLi5K1euiLS0NKHRaIRarRYRERFizpw5Qq/Xi5SUFAFArFq1SgghRGlpqVCpVAKAOHz4sMX+YmJiBACRkZHRnKvhEq+/tVG8sHSNeP2tjRaHWyK9Xi8A2PQaP368qKioMLetqKgQCxcuFGFhYTa19/f3F7///e+FTqezWIvBYBCTJ0/+2X70en1zvT11uPWePzc3F7GxsVixYgV0Oh169uyJmpoa/OUvf8FvfvMbfP/99wCAfv36AQBOnDiB6upqqNVqDBgwwGKfiYmJAICvv/66WdaBmsaoUaOQmZkJb29vAMCRI0cQFxeHl19+GVqt1qY+9Ho9Vq9ejV69emHTpk11phmNxpa7x/+R24b/6tWrGDduHHQ6HebOnQutVoucnBzodDosW7YMO3bsQHZ2NhQKBfr06QMAyM/PB3D7Ip9SaflaqEajqTMvtT4ajQb/+Mc/4OXlBQDYuHEjEhMTkZeX51B/165dw/Xr1+uM8/DwQFlZWaNrbUpuG/45c+aguLgYTz/9NNLT0xEQEGCeNm/ePPTt2xcGgwFRUVEIDAwEAPN/YHBwsNV+TdPu/s+m1kGhUOC9994zf23W5s2bMW3aNBgMBof7u/Mc32g0mqe9++67CAkJaXzRTcQtw//9999j8+bNaNeuHZYsWWJxnv79+wMA+vbtax5XWVkJAA3ex1er1QCAiooK8zjTRmbgwIFQq9Uu+TJGss2TTz6JBx98EABw5swZpKam1gmsPSxd1f/tb3+LTz/9FAAQGhqKN9980yl1NwW3vM+/adMmGI1GTJkyxeqXOZru098ZftP5X3V1tdW+q6qq6rQHgIKCAmzZsgX3338/VCoVDh482Oh1GDBgAHQ6XaP7aYxfzngWfv6B0Oq0iIiIqDfcEjUUZE9PT7zwwgvm4ZSUFIcPzS0F33SOv3fvXiQmJiI4OBhTpkzByy+/jKKiIqt9de3aFR4eju2HQ0NDcezYMYfaumX49+zZAwBISkqyOk9xcTGAuuG35ZDe0qnBgw8+aL5I9Oqrrzol/DqdDiUlJY3upzGMtbXmf0tKSuoNtzZjx441P2r76aefYt++fQ7101DwAUCr1WLlypVYuHAhPDw8MGvWLLz00ktW+7P1AqOzuWX4TVvZzp07W5xuMBjMAb0z/DExMeb2BoPB4kW/wsLCOvMCcHir3RBbHzRpSh4/3vf28PREeHh4veGWyGg0Wg3TzJkzzT+//fbbDvX/c8E3ycjIwCuvvAIvLy+kpqZiwYIFEEJY7DMsLKxRe35HuWX4TYdyd56X32nz5s24evUqAgICEB0dbR4fFxcHlUqFqqoqHDt2DAkJCfXafvXVVwCA+Pj4Jqj8J44eyjnT4rc/RKm+DGGhYSguLq433BKVlZVZPNVTKBTm27QXL15EVlaW3X3bGnwAuHTpEnbt2oXx48ejY8eOiImJwX/+8x+L/f73v//l9/Y7i2lrmJOTU2+aVqtFWloaAKBPnz51Ls4FBARg+PDhAG5vue+2f/9+5OfnQ6VSITk5uSlKpyai0WgQFBQE4PYj3Nb2wtbYE3yTO58FMV1gbkncMvzDhg0DACxbtqzO/fjs7GwkJSXh6tWrAH56uOdOCxYsgEKhwPvvv4/169ebxxcWFiI1NRUAMHv2bHTo0KEJ14CcLS4uzvzz8ePH7WrrSPDvXs59991n1zKbg1uGf968eWjbti0uXLiAXr16ITY2Fl27dsXAgQPRpUsXDB06FEDd832ThIQELF26FEIITJ8+HVFRUYiLi0P37t1RUFCA+Ph4LF26tLlXiRrpzvvtFy5csLmdo8G/ezkNPTviKm55zh8REYEDBw4gLS0N+/btw7lz59CzZ0+sWbMGM2fOND+lZyn8wE8PAb3xxhvIzs7GpUuXEBMTgylTpmDu3Lnme/3Uevzzn/9EXl4efHx87PpcfWRkpPkjvPZ+SKeoqAijR49GZWVli7xG4pbhB4AePXpg+/bt9cbr9XqcO3cOHh4e6N27t9X2I0aMwIgRI5qyRGpGOp3OoecmioqKMGzYMHz22Wd49tln7XpWv7y8HLt27bJ7mc3FbcNvzalTpyCEQExMDHx9fZ3Wb2ZmJgDg9OnTdYajoqKsfkiIWocTJ05Ao9Hg1q1bri7FqaQLv+mQz9ohv6N+/etfWxyeNm0a1q1b59RlUfNzt+ADDL/T2HvriMjV3PJqf0OaKvxErY10e37Tc/9EspNuz09EtzH8RJJi+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH4iSUn3hB+5N19fX6f+NdwVaz5GaVk5Av18kTZ7Ur1hZ3Dmp0vtwfCTW1EoFE79MkyV2huqmlqo1N7w8/OrN9ya8bCfSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrhJ5IUw08kKYafSFIMP5GkGH4iSTH8RJJi+IkkxfATSYrhb8VWrFiBQYMGITg4GG3atEFiYiJ2797t6rIatHPnTvTr1w9qtRpRUVFYuXKlq0tqVvv370dycjI6d+4MhUKBRYsWuawWhr8V27NnD1JSUrB3714cPXoUgwcPxtixY3Hw4EFXl2bRsWPHkJycjFGjRiE3Nxevvvoq5s+fj3fffdfVpTUbvV6Pnj17Yvny5QgNDXVpLfyjHa3Yrl276gwvX74cu3fvxtatWzFkyBAXVWXdypUrcf/992PJkiUAgB49euDUqVNYunQpfve737m4uuYxevRojB49GgDwwgsvuLQWht+NGI1GlJaW2v2XZGqNRhQWXaw33lBba/43/2xxveE7hbQJQLvgoAaXc/DgQaSmptYZN3LkSKSnp6O4uBgRERF21e1MFy//AH1ZRb3xtr4HSqUnutwT1jzFOgnD70YWL16MGzduYNasWXa18/TwwDd5hTj2zX8sTi+vqMR7f99pdVit8sKzKb/62eVotdp6h7qmYa1W69LwV1VV4/2/74SwMv3n3oMxQxNaXfh5zu8m3nnnHSxevBiZmZkOhWjc0EEICQpwaNnjhw9BsINtW4roe8LwYHxfh9p2ieyEIQNinVxR02P43UB6ejrS0tLwr3/9C8OGDXOoD7VahYljk6Cws13vmGjc16urTfOGhYVBp9PVGXfp0iXzNFcbnjgAoe1D7GqjVnlh4piH4aGw951zPYa/lXvllVfw2muvYefOnQ4H3yQqIhQPJfSzeX5/Px/8csQDUNj4iz9kyBB89tlndcbt3r0bnTt3dukhv4lS6YlJ44bC09P2WEz4RSLaBPo3YVVNh+FvxZ599lmsWLECGzZsQLdu3aDT6aDT6XDz5k2H+xyW2B9hHdraNO+vRj0EP19vm/t+7rnncPToUbz00kvIy8vD+vXrsWrVKvzpT39ytFynC20fghEP3G/TvLHdotGv57129a/X65Gbm4vc3FxUV1dDp9MhNzcXBQUFjpTbKAohhLVrHPQzSktLsXjxYmzZsgUXLlxAUFAQEhMT8eKLL2LAgAFNvnxre9xp06Zh3bp1Dveru3INq9ZvRW2t0eo88f164JcjHrC77x07dmD+/PnIy8tDaGgonnnmGfzxj390uNamYDQakfHxDpy9oLU6T4C/L55N+RX8fGzf+AHAl19+iaSkpHrjH3roIXz55Zf2ltooDL+DLl++jMGDB6OwsBDe3t7o2bMnLl68CJ1OB6VSiY8//hiPPvqoq8s0KygqQfQ9YfD0sO1gb//Rb7Bz79cWp7UNDsSc6Y9CrfJyZoktyrWbt/B/72WiqrrG4vQZvxqJbprIZq7KuXjY76CUlBQUFhYiPj4eRUVFOH78OIqLi7Fw4UIYDAZMnToVJSUlri4TwO172H/7eAf+d+0/UF1jsKlN4v2x6BJZ/yKcQqHAb8YkuXXwASAkKADjhg22OC0hrmerDz7A8Dvk+PHj2LFjB5RKJTZt2oQOHToAADw9PbFgwQIkJSWhvLwc6enpLq70tn8fPA4A6NShLVRetj3a4aFQ4NejH64X8qSEfogM7+j0Glui/r1j0Csmqs64dsFBGP1wvGsKcjKG/w61tbXYsGEDfvGLX6B9+/ZQq9WIjIzEyJEj8be//Q21Pz7dtWXLFgDAI488gujo6Hr9zJw5EwCQmZnZfMVbcfHyDziVfw4KAI8Mvs+utsFBARg//KfHhMM7tsMjQ/o7ucKWS6FQ4JcjHoC/nw+A2xvEiWOToHKTox6G/0elpaUYPnw4pk6dis8//xwqlQp9+/aF0WhEVlYWZs6ciVu3bgEAvv769rlwYmKixb5M44uLi1FcXGxxnuZi2uvHdu+CjnbewwaA+3p1Ra+YKCiVnpg4Nsmu22DuwN/XB4+OfBAA8PCgOER26uDiipyHj/f+KDU1FXv37kVERAQ++OCDOldkL126hLVr18LL6/YWPz8/HwCg0Wgs9hUREQGVSoXq6mrk5+c7dA971fqtuKWv/6y5PWqNRpSV3+7jzHktFr/9oUP9GIWA0tMTazfv/PmZ3ZS3SoXsk3lWH4F2lQB/H/xh2v841Jbhx+1z+MzMTCiVSuzatQu9e/euM71jx46YP3++efj69esAgODgYIv9KRQKtGnTBpcvXzbPa69b+gqU6sscamuJvrxxGxIAqKyqdkIlrVdltXutP8MPYNu2bQCAMWPG1Au+JZWVlQAAlUpldR61Wg0AqKhwLHQB/j4OtTMxGo3mwPv7+sDDxlt81Lo05veE4Qdw+vRpAMCgQYNsmt/b2xvl5eWobmBPUFVVBQDw8XHsP8fRQzmTjZ98ju/yz6JP9y6YnNy4x37JPTH8uH2xDwCCghr+PLpJcHAwysvLrR7SCyFw48YN87yOaMw5/517/cac61PLx3P+RgoMDAQAm5+Jj4mJQUlJCQoLCy1OLy4uNh8VxMTEOFSTs875nXGuT+6J4QfQq1cvbN26FYcPH7Zp/vj4eOzduxdfffWVxemm8eHh4Q5/Ws3Rczme68ulUdeGBImcnBwBQHh5eYlTp0797PzZ2dkCgFAqleLMmTP1piclJQkA4plnnmmCahu2YWuWeGHpGvHhts+bfdnUunC3ACAuLg4TJ05ETU0NRo0ahX379tWZfunSJSxZsgRlZbcPwwcMGICRI0fCYDBg8uTJuHz5MoDbe91FixZh79698PHxwfPPP9+s66G9/AO+yz/r0NN8JB9+qu9HpaWlSE5ONn+sMjw8HJ06dYJWq0VJSQmEELh+/TratGkDANDpdBgyZAjOnDkDHx8f9OjRA1qtFlqtFkqlEh9++CEmTpzYrOvAK/xkD+75fxQYGIgvvvgCa9euxcMPP4zy8nKcPHkSHh4eGDFiBNauXYuAgJ++py40NBQ5OTlIS0tDp06dcOrUKRgMBkyYMAGHDh1q9uAbhUCbIH94eSm51yebcM/vZiqrquGttv7wEZEJw08kKR72E0mK4SeSFMNPJCmGn0hSDD+RpBh+Ikkx/ESSYviJJMXwE0mK4SeSFMNPJCmGn0hSDD+RpBh+Ikkx/ESSYviJJMXwE0mK4SeSFMNPJCmGn0hSDD+RpBh+Ikkx/ESSYviJJMXwE0mK4SeSFMNPJCmGn0hSDD+RpBh+Ikkx/ESSYviJJMXwE0mK4SeSFMNPJCmGn0hSDD+RpBh+Ikkx/ESS+n+tpzUIj4h3+QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create quantum register with 2 qubits\n", "n=2\n", "qr = QuantumRegister(n) \n", "\n", "# Create a classical register with 2 bits\n", "m=2\n", "cr = ClassicalRegister(m)\n", "\n", "# Quantum circuit\n", "qc_ground = QuantumCircuit(qr,cr)\n", "\n", "#Measurement operation\n", "qc_ground.measure(qr,cr)\n", "\n", "# Draw circuit (using matplotlib)\n", "qc_ground.draw(output='mpl')" ] }, { "cell_type": "markdown", "id": "3e554b68", "metadata": {}, "source": [ "### Pauli gates\n", "\n", "#### Gate $X$: bit-flip gate \n", "\n", "The X-gate is also known as NOT gate or “bit-flip”, since it changes a state $| 0 \\rangle $ to $| 1 \\rangle $ and vice versa. **This is the quantum analogue to a classical NOT gate.**\n", "\n", "On the Bloch sphere representation, this operation corresponds to a rotation of the state around the X-axis by $\\pi$ radians.\n", "\n", "
\n", " \n", " (Source)\n", "
\n", "\n", "\n", "\n", "The $X$ gate can be represented by a $2 \\times 2$ matrix:\n", "$$\n", "X = \n", "\\begin{pmatrix}\n", "0 & 1\\\\\n", "1 & 0\n", "\\end{pmatrix}\n", "$$\n", "\n", "\n", "#### $Y$: bit-and-phase-flip gate\n", "\n", "The $Y$ gate is defined by the matrix:\n", "\n", "$$\n", "Y = \n", "\\begin{pmatrix}\n", "0 & -i\\\\\n", "i & 0\n", "\\end{pmatrix}\n", "$$\n", "\n", "It is equivalent to a rotation around Y-axis of the Bloch sphere by $\\pi$ radians.\n", "This gate maps $| 0 \\rangle $ to $i | 1 \\rangle $, and $| 1 \\rangle$ to $ - i | 0 \\rangle$\n", "\n", "#### $Z$: phase-flip gate\n", "\n", "The phase flip gate $Z$ is defined by:\n", "\n", "$$\n", "Z = \n", "\\begin{pmatrix}\n", "1 & 0\\\\\n", "0 & -1\n", "\\end{pmatrix}\n", "$$\n", "\n", "It leaves the basis state $|0 \\rangle $ unchanged, while mapping $| 1 \\rangle$ to $- | 1 \\rangle $." ] }, { "cell_type": "code", "execution_count": 7, "id": "48d3ec97", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
         ┌───┐\n",
       "qubit_0: ┤ X ├\n",
       "         ├───┤\n",
       "qubit_1: ┤ Y ├\n",
       "         ├───┤\n",
       "qubit_2: ┤ Z ├\n",
       "         └───┘
" ], "text/plain": [ " ┌───┐\n", "qubit_0: ┤ X ├\n", " ├───┤\n", "qubit_1: ┤ Y ├\n", " ├───┤\n", "qubit_2: ┤ Z ├\n", " └───┘" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create registers\n", "qr = QuantumRegister(3, 'qubit')\n", "\n", "# Quantum circuit\n", "qc_pauli = QuantumCircuit(qr)\n", "\n", "# Perform X gate on qubit 0\n", "qc_pauli.x(qr[0])\n", "\n", "# Perform Y gate on qubit 1\n", "qc_pauli.y(qr[1])\n", "\n", "# Perform Z gate on qubit 2\n", "qc_pauli.z(qr[2])\n", "\n", "# Draw circuit\n", "qc_pauli.draw()" ] }, { "cell_type": "markdown", "id": "ac11384b", "metadata": {}, "source": [ "### Hadamard gate\n", "\n", "The Hadamard gate may be used to create superposition. It maps the basis state $| 0 \\rangle$ to $| + \\rangle =\\frac{| 0 \\rangle + | 1 \\rangle }{\\sqrt{2}}$, and $| 1 \\rangle $ to $ | - \\rangle =\\frac{ |0 \\rangle - |1 \\rangle }{\\sqrt{2}}$. On the Bloch sphere, $| + \\rangle$ and $| - \\rangle $ are represented by points on the X axis. \n", "\n", "When measured, these states have equal probability of becoming $| 1\\rangle $ or $| 0 \\rangle $, since the square modulus of the probability amplitude for each of the basis states has equal value.\n", "\n", "
\n", " \n", " (Source)\n", "
\n", "\n", "In fact, $|+\\rangle $ and $| - \\rangle $ are indistinguishable when measured on the computational basis. However, the states can be identified by measuring the qubit on the superposition basis, i.e. along the X-axis. A way to achieve this is by simply applying an Hadamard gate before performing the measurement.\n", "\n", "The Hadamard gate is defined by:\n", "\n", "$$\n", "H = \\frac{1}{\\sqrt{2}}\n", "\\begin{pmatrix}\n", "1 & 1\\\\\n", "1 & -1\n", "\\end{pmatrix}\n", "$$\n", "\n", " \n", "\n", "**Note**: The Hadamard gate, along with the X, Y and Z gates, is self-inverse: $H.H = I$." ] }, { "cell_type": "code", "execution_count": 8, "id": "065af640", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    ┌───┐\n",
       "q4: ┤ H ├\n",
       "    └───┘
" ], "text/plain": [ " ┌───┐\n", "q4: ┤ H ├\n", " └───┘" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qr = QuantumRegister(1) \n", "\n", "# Quantum circuit\n", "q_hadamard = QuantumCircuit(qr)\n", "\n", "# Perform the operation\n", "q_hadamard.h(qr)\n", "\n", "# Draw the circuit\n", "q_hadamard.draw()" ] }, { "cell_type": "markdown", "id": "a570f7f3", "metadata": {}, "source": [ "
\n", "\n", "**Exercise 1.2 - Gates and basis**\n", "\n", " \n", "\n", "- Simulate the circuits `qc_a`, `qc_b` and `qc_c`, below, and examine the results.\n", "\n", " \n", "\n", "**Note**: in Qiskit (and by convention), every qubit is initialized in the state $|0\\rangle$.\n", "
" ] }, { "cell_type": "code", "execution_count": 9, "id": "838b86ac", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# qc_a\n", "\n", "# Create registers\n", "qr = QuantumRegister(1, 'qc_a')\n", "cr = ClassicalRegister(1, 'c_a')\n", "\n", "# Create circuit\n", "qc_a = QuantumCircuit(qr, cr)\n", "\n", "# Perform quantum operations\n", "qc_a.h(qr[0])\n", "\n", "# Measure\n", "qc_a.measure(qr[0], cr[0])\n", "\n", "# Draw\n", "qc_a.draw(output='mpl')" ] }, { "cell_type": "markdown", "id": "0cf5e774", "metadata": {}, "source": [ "
\n", " \n", " \n", "**Simulating a quantum circuit**\n", "\n", " \n", "\n", "The **Aer** component allows for the simulation of the execution and measurement of a quantum circuit, locally, for a small number of qubits, using the `qasm_simulator`.\n", "\n", " \n", "\n", "For that, we need to call the simulator using the `BasicAer.get_backend` method. We then define a _job_, i.e. the task assigned to a specific backend - simulator or real quantum processor - by calling the function `execute(qc, backend, shots)`, where `qc` is the quantum circuit to be executed, `backend` is the execution backend, and `shots` is the number of executions to be performed.\n", "\n", " \n", "\n", "After the job is executed, we can extract a `result()`, which allows us to get the measurement result frequencies with `get_counts(qc)`, and, from that, plot an histogram of probabilities with the function `plot_histogram(counts)`.\n", "\n", "\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 11, "id": "581038bb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'0': 505, '1': 495}\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Use Aer's 'qasm_simulator'\n", "q_simulator = BasicAer.get_backend('qasm_simulator') \n", "\n", "# Execute the circuit 1000 times on the qasm simulator\n", "job_a = execute(qc_a, q_simulator, shots=1000) \n", "\n", "# Grab the results from the job\n", "result_a = job_a.result() \n", "counts_a = result_a.get_counts() \n", "\n", "# Print frequencies, and plot histogram\n", "print(counts_a)\n", "plot_histogram(counts_a)" ] }, { "cell_type": "code", "execution_count": 12, "id": "b1f374f2", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# qc_b\n", "\n", "qr = QuantumRegister(1, 'qc_b')\n", "cr = ClassicalRegister(1, 'c_b')\n", "\n", "qc_b = QuantumCircuit(qr, cr)\n", "\n", "qc_b.h(qr[0])\n", "qc_b.z(qr[0])\n", "\n", "qc_b.measure(qr[0], cr[0])\n", "\n", "qc_b.draw(output='mpl')" ] }, { "cell_type": "code", "execution_count": 8, "id": "e3a6488e", "metadata": {}, "outputs": [], "source": [ "# Execute simulation\n", "#job_b = \n", "\n", "# Grab the results from the job\n", "#counts_b = \n", "\n", "# Print frequencies, and plot histogram\n" ] }, { "cell_type": "code", "execution_count": 16, "id": "8928cf2b", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# qc_c\n", "\n", "qr = QuantumRegister(1, 'qc_c')\n", "cr = ClassicalRegister(1, 'c_c')\n", "\n", "qc_c = QuantumCircuit(qr, cr)\n", "\n", "qc_c.h(qr[0])\n", "qc_c.z(qr[0])\n", "qc_c.h(qr[0])\n", "\n", "qc_c.measure(qr[0], cr[0])\n", "\n", "qc_c.draw(output='mpl')" ] }, { "cell_type": "code", "execution_count": 10, "id": "fdfbe8c0", "metadata": {}, "outputs": [], "source": [ "# Execute simulation\n", "#job_c = \n", "\n", "# Grab the results from the job\n", "#counts_c = \n", "\n", "# Print frequencies, and plot histogram\n" ] }, { "cell_type": "markdown", "id": "6b9333fe", "metadata": {}, "source": [ "
\n", "\n", "**Exercise 1.2 - Gates and basis** (continued)\n", "\n", " \n", "\n", "The below diagram is a useful shorthand for quantum states conversion using quantum gates. It also depicts how quantum operations are reversible. A qubit in any of the four states $|0\\rangle$, $|1\\rangle$, $|-\\rangle$, $|+\\rangle$ can be converted to any other performing simple one qubit gates.\n", "\n", " \n", "\n", "\"\" \n", "\n", " \n", "\n", "**Questions:**\n", "\n", "\n", "1. Compare the simulation results of `qc_a` and `qc_b`. Do similar measurement results imply the same quantum state is being measured?\n", "\n", "1. Observe the results of `qc_c` and the diagram above. \n", "\n", " 1. How could we reach the same final state using only one quantum operation?\n", " 1. Verify your answer to the previous question by calculating $H.Z.H$ (the corresponding matrices are defined above in this notebook).\n", "\n", "
\n", "\n", " " ] }, { "cell_type": "markdown", "id": "6e29d064", "metadata": {}, "source": [ "
\n", " \n", "**Statevector simulator**\n", "\n", " \n", "\n", "**Question 1** of Exercise 1.2 can be verified by using another of **Aer** simulators, the `statevector_simulator`. This simulator is able to determine the vector describing the state of a quantum circuit at a given point.\n", "\n", "To use it, we only need to define the the statevector simulator as our execution backend.\n", "\n", " \n", "\n", "**Note**: To get accurate results from the statevector simulator, no measurement operations can be applied to the circuit, since measurements collapse superposition states into deterministic ones.\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 15, "id": "bc0884b2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Final state of qc_a:\n", "[0.707+0.j 0.707+0.j]\n" ] } ], "source": [ "# First, let's determine the vector describing the final state of the circuit qc_a\n", "\n", "# Remove measurement operations from circuit\n", "\n", "qc_a.remove_final_measurements()\n", "\n", "# Use Aer's 'statevector_simulator'\n", "v_simulator = BasicAer.get_backend('statevector_simulator') \n", "\n", "# Execute the circuit\n", "job_a = execute(qc_a,v_simulator)\n", "\n", "# Get the resulting state vector\n", "state_a = job_a.result().get_statevector(qc_a, decimals=3)\n", "\n", "# Print vector as a column\n", "print(\"Final state of qc_a:\")\n", "print(state_a)" ] }, { "cell_type": "code", "execution_count": 12, "id": "a819eb8c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Final state of qc_b:\n" ] } ], "source": [ "# Now, let's determine the final state of the circuit qc_b\n", "\n", "\n", "# Execute the circuit\n", "#job_b = \n", "\n", "# Get the resulting state vector\n", "#state_b = \n", "\n", "# Print vector as a column\n", "print(\"Final state of qc_b:\")\n" ] }, { "cell_type": "markdown", "id": "5506abd3", "metadata": {}, "source": [ "From the state vector simulator results, we can determine the final states in bra-ket notation:\n", "\n", "$$ |qc_a\\rangle = \\frac{1}{\\sqrt{2}}\n", "\\begin{pmatrix}\n", "1 \\\\\n", "1\n", "\\end{pmatrix}\n", "= |+\\rangle\n", "$$\n", "\n", "$$ |qc_b\\rangle = \\frac{1}{\\sqrt{2}}\n", "\\begin{pmatrix}\n", "1 \\\\\n", "-1\n", "\\end{pmatrix}\n", "= |-\\rangle\n", "$$" ] }, { "cell_type": "markdown", "id": "ed628367", "metadata": {}, "source": [ "
\n", " \n", "**Unitary simulator**\n", "\n", " \n", "\n", "**Question 2** of Exercise 1.2 can be verified by using another of **Aer** simulators, the `unitary_simulator`. This simulator is able to determine the vector matrix describing the composition of operations in the quantum circuit - in this case, $H.Z.H$.\n", "\n", " \n", "\n", "**Note**: As with the `statevector_simulator` no measurement operations should be applied before a simulation.\n", "
" ] }, { "cell_type": "code", "execution_count": 18, "id": "37c7cc0a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Unitary matrix of qc_c:\n", "[[0.+0.j 1.-0.j]\n", " [1.-0.j 0.+0.j]]\n" ] } ], "source": [ "# Now, let's determine the matrix of H.Z.H in q_c\n", "qc_c.remove_final_measurements()\n", "\n", "# Use Aer's 'unitary_simulator'\n", "u_simulator = BasicAer.get_backend('unitary_simulator')\n", "\n", "# Execute the circuit\n", "job_c = execute(qc_c, u_simulator) \n", "\n", "# Get the resulting state vector\n", "state_c = job_c.result().get_unitary(qc_c, decimals=3)\n", "\n", "# Print vector as a column\n", "print(\"Unitary matrix of qc_c:\")\n", "print(state_c)" ] }, { "cell_type": "markdown", "id": "d299db3a", "metadata": {}, "source": [ "From the unitary simulator results, we can see that:\n", "\n", "$$ H.Z.H =\n", "\\begin{pmatrix}\n", "0 & 1\\\\\n", "1 & 0\n", "\\end{pmatrix} = X\n", "$$\n" ] }, { "cell_type": "code", "execution_count": 19, "id": "c1cdb2f2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Draw transaction on the Bloch sphere\n", "visualize_transition(qc_c, fpg=20, spg=1, trace=True)" ] }, { "cell_type": "markdown", "id": "889ead58", "metadata": {}, "source": [ " \n", "\n", "# 3. Multi-qubit states\n", "\n", " \n", "\n", "Multiple quantum bits can be described with the ket notation. The tensor product is typically implicit; for a state composed of qubits $q_0$ and $q_1$:\n", "\n", " \n", "\n", "$$\n", "|q_1\\rangle \\otimes |q_0\\rangle = |q_1\\rangle |q_0\\rangle = |q_1 q_0\\rangle\n", "$$\n", "\n", " \n", "\n", "**Note**: The ordering convention adopted in Qiskit writes the first qubit of a circuit at the far-right of the ket, and adds each additional qubit on the left:\n", "\n", " \n", "\n", "$$ |q_n\\rangle \\otimes \\cdots \\otimes |q_1\\rangle \\otimes |q_0\\rangle $$\n", "\n", " \n", "\n", "Keep in mind that this ordering may be different than quantum circuits and algorithms described in scientific literature, and needs to be taken into account when analysing results of multi-qubit measurements, or the algebraic description of multi-qubit operations and states.\n", "\n", "
\n", "\n", "**Example 1.2 - Tensor product**\n", "\n", "Consider two non-entangled qubits of a quantum circuit, $q_a$ and $q_b$. Their joint-state description can be written in bra-ket notation, with the tensor product providing an algebraic description of the state.\n", "\n", " \n", "\n", "$$|q_a q_b\\rangle = |q_a\\rangle \\otimes |q_b\\rangle = \n", "\\begin{pmatrix}\n", "q_{a1} \\\\ \n", "q_{a2}\n", "\\end{pmatrix} \\otimes\n", "\\begin{pmatrix}\n", "q_{b1} \\\\ \n", "q_{b2}\n", "\\end{pmatrix} =\n", "\\begin{pmatrix}\n", "q_{a1}.q_{b1} \\\\\n", "q_{a1}.q_{b2} \\\\\n", "q_{a2}.q_{b1} \\\\\n", "q_{a2}.q_{b2}\n", "\\end{pmatrix}\n", "$$\n", "\n", " \n", "\n", "Using the tensor product, we can determine the vector of an $n$-qubit basis state. For example:\n", "\n", " \n", "\n", "$$|10\\rangle = |1\\rangle \\otimes |0\\rangle = \n", "\\begin{pmatrix}\n", "0 \\\\ \n", "1\n", "\\end{pmatrix} \\otimes\n", "\\begin{pmatrix}\n", "1 \\\\ \n", "0\n", "\\end{pmatrix} = \n", "\\begin{pmatrix}\n", "0 \\\\ \n", "0 \\\\\n", "1 \\\\\n", "0\n", "\\end{pmatrix}\n", "$$\n", "
\n", "\n", " \n", "\n", "### Entanglement and Bloch sphere for multi-qubit states\n", "\n", " \n", "\n", "Since qubits can be entangled, multi-qubit states, in general, cannot be expressed by simply representing each qubit's Bloch sphere. This is because the dimension of the vector space rises exponentially with the number of qubits, to account for correlation between qubits. One attempt to visualize multi-qubit states is made [here](https://medium.com/qiskit/visualizing-bits-and-qubits-9af287047b28). \n", "\n", "**For a quantum system, its description is more than the sum of descriptions for each individual qubit.**" ] }, { "cell_type": "markdown", "id": "ee9bfe27", "metadata": {}, "source": [ " \n", "\n", "## 3.1 Multi-qubit operations\n", "\n", " \n", "\n", "### CNOT gate \n", "\n", "The controlled-NOT (or controlled-$X$) gate allows for the creation of entanglement between two qubits in a quantum circuit. The CNOT gate's action on basis states is to flip, i.e. apply an $X$ gate to, the target qubit (denoted as $\\oplus$ in quantum circuits) if the control qubit (denoted as $\\bullet$), is $|1\\rangle$; otherwise the target qubit goes unchanged.\n", "\n", "The matrix describing a CNOT depends on which qubit acts as control. For a state $|q_1 q_0\\rangle$, if we apply a CNOT operation with $q_1$ as control, the matrix is described as:\n", "\n", "$$\n", "C_X = \n", "\\begin{pmatrix}\n", "1 & 0 & 0 & 0\\\\\n", "0 & 1 & 0 & 0\\\\\n", "0 & 0 & 0 & 1\\\\\n", "0 & 0 & 1 & 0\n", "\\end{pmatrix}. \n", "$$\n", "\n", "However, if $q_0$ is the control qubit, the gate is described by the following matrix:\n", "\n", "$$\n", "C_X = \n", "\\begin{pmatrix}\n", "1 & 0 & 0 & 0\\\\\n", "0 & 0 & 0 & 1\\\\\n", "0 & 0 & 1 & 0\\\\\n", "0 & 1 & 0 & 0\n", "\\end{pmatrix}. \n", "$$" ] }, { "cell_type": "code", "execution_count": 21, "id": "6221c466", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create 2 registers and quantum circuit\n", "qr = QuantumRegister(2)\n", "qc = QuantumCircuit(qr)\n", "\n", "# Perform CNOT operation\n", "# The first argument is the control qubit, the second is the target\n", "qc.cx(qr[0],qr[1])\n", "# If we switch the arguments, the gate turns 'upside down'\n", "qc.cx(qr[1],qr[0])\n", "# Draw the circuit\n", "qc.draw(output='mpl')" ] }, { "cell_type": "markdown", "id": "ff307863", "metadata": {}, "source": [ "
\n", " \n", "Example 1.3 - Entangling two qubits \n", "\n", " \n", "\n", "Admit a 2-qubit quantum system, with $| q_0 \\rangle = \\frac{1}{\\sqrt{2}}(|0\\rangle + |1 \\rangle)$ and $|q_1\\rangle = | 0 \\rangle $. The initial two-qubit state can be written using the tensor product (i.e. a separable state):\n", "\n", "
\n", "$$\n", "|q_1 q_0 \\rangle = |0\\rangle \\otimes \\frac{1}{\\sqrt{2}} \\left ( |0\\rangle + |1\\rangle \\right ) = \\frac{1}{\\sqrt{2}}\\left ( |00\\rangle + |01\\rangle \\right )\n", "$$\n", "
\n", "\n", "Admit a CNOT gate $CX_{01}$ with qubit $q_0$ as control, and $q_1$ as target. The CNOT gate will map the two-qubit basis state $|01\\rangle$ to the state $|11\\rangle $, while leaving $|00\\rangle$ unchanged:\n", "\n", " \n", "\n", "
\n", "$$\n", "CX_{01} |q_1 q_0\\rangle = \\frac{1}{\\sqrt{2}}\\left ( |00\\rangle + |11\\rangle \\right )\n", "$$\n", "
\n", "\n", "The two-qubit state can not be described in terms of a tensor product of individual qubits - the qubits are **entangled**.\n", "\n", "
" ] }, { "cell_type": "markdown", "id": "836ee148", "metadata": {}, "source": [ "### Other multi-qubit operations\n", "\n", "The gate set presented so far allows for universal quantum computations, i.e. it is possible to decompose any quantum operations over $n$ qubits to arbitrary precision, using only this set of gates. How to efficiently determine and perform such a decomposition, however, is not a trivial problem.\n", " \n", "Other notable operators:\n", "\n", "- __SWAP gate__, which exchanges the state between two qubits:\n", "\n", " \n", "\n", "$$\n", "\\mathrm{SWAP} = \n", "\\begin{pmatrix}\n", "1 & 0 & 0 & 0\\\\\n", "0 & 0 & 1 & 0\\\\\n", "0 & 1 & 0 & 0\\\\\n", "0 & 0 & 0 & 1\n", "\\end{pmatrix}.\n", "$$\n", "\n", " \n", "\n", "- __Toffoli gate__ (or **CCNOT**), which performs a NOT operations on a target qubit, using two other qubits as controls." ] }, { "cell_type": "code", "execution_count": 16, "id": "01739a3a", "metadata": {}, "outputs": [], "source": [ "# Create registers and quantum circuit\n", "\n", "# Apply Toffoli - first two arguments are the controls\n", "\n", "# Swap two qubits\n", "\n", "# Draw the circuit\n" ] }, { "cell_type": "markdown", "id": "e3ecf40f", "metadata": {}, "source": [ "
\n", "\n", "You can view a more extensive list of quantum operations in [Qiskit's online tutorials](https://qiskit.org/documentation/tutorials/circuits/3_summary_of_quantum_operations.html).\n", "\n", "
" ] }, { "cell_type": "markdown", "id": "bfaeed2a", "metadata": {}, "source": [ "
\n", "\n", "**Exercise 1.3 - Swap and CNOT equivalence**\n", "\n", " \n", "\n", "\"\" \n", " \n", " a) b)\n", "\n", " \n", "\n", "Consider the circuits depicted in the image above.\n", "\n", "1. Verify that operations **a)** and **b)** are equivalent, by building each into a quantum circuit, and comparing the unitary matrices with the `unitary_simulator`.\n", "\n", "1. In a new circuit, prepare the state $|q_1 q_0\\rangle = |+\\rangle|0\\rangle$. With the `statevector_simulator`, check the vector representation of the circuit, after preparing the initial state, and again after applying operation **b)**. Did the qubits swap states?\n", "\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 23, "id": "72623799", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Unitary matrix:\n", "[1. 0. 0. 0.]\n", "[0. 0. 1. 0.]\n", "[0. 1. 0. 0.]\n", "[0. 0. 0. 1.]\n" ] } ], "source": [ "# Circuit a)\n", "from qiskit import Aer\n", "u_simulator = Aer.get_backend(\"unitary_simulator\")\n", "\n", "# Create registers and quantum circuit\n", "qr=QuantumRegister(2)\n", "qc=QuantumCircuit(qr)\n", "# Swap two qubits\n", "qc.swap(qr[0],qr[1])\n", "# Execute the circuit\n", "job = execute(qc, u_simulator)\n", "state_a = job.result().get_unitary()\n", "# Print vector as a column\n", "print(\"Unitary matrix:\")\n", "for i in state_a.data:\n", " print(i.real)" ] }, { "cell_type": "code", "execution_count": 18, "id": "0148c93f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Unitary matrix:\n" ] } ], "source": [ "# Circuit b)\n", "\n", "# Create registers and quantum circuit\n", "qr=QuantumRegister(2)\n", "qc=QuantumCircuit(qr)\n", "# 3 CNOT\n", "\n", "# Execute the circuit\n", "\n", "# Get the resulting state vector\n", "\n", "# Print vector as a column\n", "print(\"Unitary matrix:\")\n", "#for i in state_CB:\n", "# print(i.real)" ] }, { "cell_type": "code", "execution_count": 19, "id": "4c62039e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Statevector:\n" ] } ], "source": [ "# Question 2\n", "\n", "# Create registers and quantum circuit\n", "\n", "# Prepare states\n", "\n", "# Check statevector\n", "\n", "# Get the resulting state vector\n", "\n", "# Print vector as a column\n", "print(\"Statevector:\")\n" ] }, { "cell_type": "code", "execution_count": 20, "id": "a4234b91", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Statevector:\n" ] } ], "source": [ "# Now add operations\n", "# 3 CNOT\n", "\n", "# Check statevector again\n", "\n", "# Get the resulting state vector\n", "\n", "# Print vector as a column\n", "print(\"Statevector:\")\n" ] }, { "cell_type": "markdown", "id": "baafcfb1", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "id": "3e4eb349", "metadata": {}, "source": [ "### Summary of Gates" ] }, { "cell_type": "markdown", "id": "a7380104", "metadata": {}, "source": [ "Gates implemented in Qiskit devices:\n", "\n", "$$u3(\\theta,\\phi,\\lambda) = \\begin{bmatrix}\\cos(\\theta /\\ 2) & -e^{i \\lambda }\\sin(\\theta /\\ 2) \\\\ e^{i\\phi}\\sin(\\theta /\\ 2) & e^{i\\lambda+i\\phi}\\cos(\\theta/\\ 2) \\end{bmatrix}$$\n", "\n", "$$u2(\\phi,\\lambda) = u3(\\pi /\\ 2,\\phi,\\lambda) = \\begin{bmatrix}1 & -e^{i \\lambda}\\\\ e^{i\\phi}& e^{i(\\lambda+\\phi)} \\end{bmatrix}$$\n", "\n", "$$u1(\\lambda) = u3(0,0,\\lambda) = \\begin{bmatrix}1 & 0\\\\ 0& e^{i\\lambda} \\end{bmatrix}$$\n", "\n", "$$u0(\\delta) = u3(0,0,0) = \\begin{bmatrix}1 & 0\\\\ 0&1 \\end{bmatrix}$$" ] }, { "cell_type": "markdown", "id": "daf13852", "metadata": {}, "source": [ "Some gates you can use:\n", "\n", "(Let qr being the quantum register and qc being the quantum circuit.)\n", "\n", "\n", "|Gate Name|Syntax |Matrix|How is it implemented| \n", "|-|-|-|-|\n", "|Identity |qc.id(qr)| $Id = \\begin{bmatrix} 1&0\\\\0&1 \\end{bmatrix}$|$u0(1)$|\n", "|Bit-flip or Pauli-X| qc.x(qr)| $ X = \\begin{bmatrix} 0&1\\\\1&0 \\end{bmatrix}$|$u3(\\pi,0,\\pi)$|\n", "|Bit and phase-flip or Pauli-Y| qc.y(qr)|$ Y = \\begin{bmatrix} 0&-i\\\\i&0 \\end{bmatrix}$|$u3(\\pi,\\pi /\\ 2,\\pi /\\ 2)$|\n", "|Phase-flip or Pauli-Z| qc.z(qr)| $Z = \\begin{bmatrix} 1&0\\\\0&-1 \\end{bmatrix}$|$u1(\\pi)$|\n", "|Hadamard|qc.h(qr)| $ H =\\frac{1}{\\sqrt{2}}\\begin{bmatrix} 1 & 1 \\\\ 1 & -1\\end{bmatrix}$|$u2(0,\\pi)$|\n", "|S or $\\sqrt{Z}$-Phase|qc.s(qr)|$ S =\\begin{bmatrix} 1 & 0 \\\\ 0 & i\\end{bmatrix}$|$u1(\\pi /\\ 2)$|\n", "|S$^\\dagger$ or conjugate $\\sqrt{Z}$-Phase|qc.sdg(qr)| $S^\\dagger =\\begin{bmatrix} 1 & 0 \\\\ 0 & -i\\end{bmatrix}$|$u1(-\\pi /\\ 2)$|\n", "|T or $\\sqrt{S}$-Phase|qc.t(qr)| $T=\\begin{bmatrix}1 & 0 \\\\ 0 & e^{i \\pi /\\ 4}\\end{bmatrix}$| $u1( \\pi /\\ 4)$|\n", "|T$^\\dagger$ or conjugate $\\sqrt{S}$-Phase|qc.tdg(qr)| $ T^\\dagger =\\begin{bmatrix}1 & 0 \\\\ 0 & e^{-i \\pi /\\ 4}\\end{bmatrix}$| $u1( -\\pi /\\ 4)$|\n", "\n" ] }, { "cell_type": "markdown", "id": "a13cfcb4", "metadata": {}, "source": [ "Multiqubit gates:\n", "\n", "The matrix looks different from the rest of the bibliography because qiskit uses different definitions of least and most significant qubits.\n", "\n", "Let control be the the 0 qubit and the target the 1 qubit.\n", "\n", "|Gate Name|Syntax |Matrix| \n", "|-|-|-|\n", "|Controlled-X or controlled-Not|qc.cx(qr\\[control\\],qr\\[target\\])|$CX = \\begin{bmatrix}1&0&0&0\\\\0&0&0&1\\\\0&0&1&0\\\\0&1&0&0\\end{bmatrix}$ |\n", "|Controlled-Y|qc.cy(qr\\[control\\],qr\\[target\\])|$CY = \\begin{bmatrix}1&0&0&0\\\\0&0&0&-i\\\\0&0&1&0\\\\0&i&0&0\\end{bmatrix}$ |\n", "|Controlled-Z or controlled-Phase|qc.cz(qr\\[control\\],qr\\[target\\])| $CZ =\\begin{bmatrix}1&0&0&0\\\\0&1&0&0\\\\0&0&1&0\\\\0&0&0&-1\\end{bmatrix}$ |\n", "|Controlled-Hadamard|qc.ch(qr\\[control\\],qr\\[target\\])|$CH = \\begin{bmatrix}1&0&0&0\\\\0&\\frac{1}{\\sqrt{2}}&0&\\frac{1}{\\sqrt{2}}\\\\0&0&1&0\\\\0&\\frac{1}{\\sqrt{2}}&0&-\\frac{1}{\\sqrt{2}}\\end{bmatrix}$ |\n", "|SWAP|qc.swap(qr\\[control\\],qr\\[target\\])| $SAWP =\\begin{bmatrix}1&0&0&0\\\\0&0&1&0\\\\0&1&0&0\\\\0&0&0&1\\end{bmatrix}$ |" ] }, { "cell_type": "markdown", "id": "e0704c4c", "metadata": {}, "source": [ "Finally, there is the measure gate.\n", "\n", "* qc.measure(qr,cr) - it adds measures to all qubits\n", "* qc.measure_all() - it adds measure to all qubits and creates the classical space to register the measures\n", "* qc.measure(qr\\[0\\],cr\\[0\\]) - it adds a measure to qubit 0 and saves value in classical register 0" ] }, { "cell_type": "code", "execution_count": 21, "id": "c1847c08", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

Version Information

SoftwareVersion
qiskit0.44.1
qiskit-terra0.25.1
qiskit_aer0.12.2
System information
Python version3.11.5
Python compilerMSC v.1916 64 bit (AMD64)
Python buildmain, Sep 11 2023 13:26:23
OSWindows
CPUs2
Memory (Gb)7.685626983642578
Tue Sep 19 12:00:32 2023 Hora de Verão de GMT
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import qiskit.tools.jupyter\n", "%qiskit_version_table" ] }, { "cell_type": "code", "execution_count": null, "id": "bf59d6dd", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }